Package org.one.stone.soup.wiki.screen.multicaster.applet

Source Code of org.one.stone.soup.wiki.screen.multicaster.applet.JScreenShare

package org.one.stone.soup.wiki.screen.multicaster.applet;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.io.IOException;
import java.net.Socket;

import javax.swing.JLabel;
import javax.swing.JPanel;

import org.one.stone.soup.screen.recorder.DesktopScreenRecorder;
import org.one.stone.soup.screen.recorder.ScreenRecorder;
import org.one.stone.soup.screen.recorder.ScreenRecorderListener;
import org.one.stone.soup.swing.JRootFrame;
import org.one.stone.soup.xml.XmlElement;

public class JScreenShare extends JRootFrame implements ScreenRecorderListener{

  private ScreenRecorder recorder;

  private JLabel text;
  private int frameCount;
 
  private String address;
  private int port;
  private String page;
  private Socket socket;
 
  public JScreenShare(String address,int port,String page)
  {
    super("Screen Share",new String[]{});
   
    this.address = address;
    this.port = port;
    this.page = page;
   
    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(1,2));
    panel.setBackground(Color.black);
   
    JLabel frameLabel = new JLabel("Frame: 0 Time: 0");
    frameLabel.setBackground(Color.black);
    frameLabel.setForeground(Color.red);
    text=new JLabel("No recording selected");
    text.setBackground(Color.black);
    text.setForeground(Color.red);
   
    panel.add(text);
    panel.add(frameLabel);
   
    this.getContentPane().add( panel,BorderLayout.SOUTH );
   
    this.pack();
    this.setVisible(true);
   
    start();
  }

  public void start()
  {
    try{
      XmlElement header = new XmlElement("Recorder");
      Rectangle screen = new Rectangle( Toolkit.getDefaultToolkit ().getScreenSize() );
     
      socket = new Socket(address,80);
      socket.getOutputStream().write( ("GET "+page+" HTTP/1.1\r\n").getBytes() );
      socket.getOutputStream().write( ("\r\n\r\n").getBytes() );
     
      socket.getOutputStream().write(header.toXml().getBytes());
      socket.getOutputStream().flush();
     
      recorder = new DesktopScreenRecorder(socket.getOutputStream(),this);
      recorder.startRecording();
    }
    catch(IOException ioe)
    {
      ioe.printStackTrace();
    }
  }

  public void frameRecorded(boolean fullFrame)
  {
    frameCount++;
    text.setText("Frame: "+frameCount);   
  }

  public void recordingStopped()
  {
    recorder = null;
   
    text.setText("Ready to record");
  }

  /* (non-Javadoc)
   * @see wet.wired.swing.JRootFrame#destroy()
   */
  public boolean destroy(Object source) {
    return true;
  }

  public static void main(String[] args)
  {
    JScreenShare recorder = new JScreenShare(args[0],Integer.parseInt(args[1]),args[2]);
  }
}
TOP

Related Classes of org.one.stone.soup.wiki.screen.multicaster.applet.JScreenShare

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.